using UnityEngine;

public class LocalToWorldMatrixExample1 : MonoBehaviour
{
    public Transform 本地坐标系;
    public Transform 本地坐标系下物体;

    void OnGUI()
    {
        GUILayout.Label($"本地坐标系.rotation : {本地坐标系.rotation.ToString()}");
        GUILayout.Label($"本地坐标系.right    : {本地坐标系.right.ToString()}");
        GUILayout.Label($"本地坐标系.up       : {本地坐标系.up.ToString()}");
        GUILayout.Label($"本地坐标系.forward  : {本地坐标系.forward.ToString()}");
        GUILayout.Label($"本地坐标系下物体.position      : {本地坐标系下物体.position.ToString()}");
        GUILayout.Label($"本地坐标系下物体.localPosition : {本地坐标系下物体.localPosition.ToString()}");
        GUILayout.Label("================================");

        var testVector4 = 本地坐标系.localToWorldMatrix * Vector3.right;
        GUILayout.Label($"本地坐标系.localToWorldMatrix * Vector3.right : {testVector4.ToString()}");
        GUILayout.Label($"该结果等于 本地坐标系.right 即 本地坐标系(1,0,0) 在 世界坐标系 的 位置");
        testVector4 = 本地坐标系.worldToLocalMatrix * 本地坐标系.right;
        GUILayout.Label($"本地坐标系.worldToLocalMatrix * 上述结果 : {testVector4.ToString()}");
        GUILayout.Label($"该结果说明 世界坐标系下 {本地坐标系.right.ToString()} 在 本地坐标系 为 {testVector4.ToString()}");
        GUILayout.Label("================================");

        GUILayout.Label(
            $"本地坐标系.localToWorldMatrix * 本地坐标系下物体.localPosition : {本地坐标系.localToWorldMatrix * 本地坐标系下物体.localPosition}");
        GUILayout.Label(
            $"本地坐标系.worldToLocalMatrix * 本地坐标系下物体.position : {本地坐标系.worldToLocalMatrix * 本地坐标系下物体.position}");
    }
}